package main

import (
	"fmt"
	"log"
	"net"

	"google.golang.org/grpc"
	"google.golang.org/grpc/reflection"

	"gitee.com/qzcsu/go-web-study/grpc/impl"
	"gitee.com/qzcsu/go-web-study/grpc/proto/pandago"
)

func main() {
	// 监听本地的8972端口
	lis, err := net.Listen("tcp", ":8997")
	if err != nil {
		fmt.Printf("failed to listen: %v", err)
		return
	}
	s := grpc.NewServer() // 创建gRPC服务器
	// 将服务描述(server)及其具体实现(PandaGoSrv)注册到 gRPC 中去.
	// 内部使用的是一个 map 结构存储，类似 HTTP server。
	pandago.RegisterPandaGoServiceServer(s, &impl.PandaGoSrv{})
	reflection.Register(s) //在给定的gRPC服务器上注册服务器反射服务
	// Serve方法在lis上接受传入连接，为每个连接创建一个ServerTransport和server的goroutine。
	// 该goroutine读取gRPC请求，然后调用已注册的处理程序来响应它们。
	log.Println("server 启动成功")
	err = s.Serve(lis)
	if err != nil {
		fmt.Printf("failed to serve: %v", err)
		return
	}
}
